<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>
  <HEAD>
    <META name="generator" content=
    "HTML Tidy for Java (vers. 2009-12-01), see jtidy.sourceforge.net">
    <META http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <META name="GENERATOR" content="Microsoft FrontPage 4.0">
    <META name="ProgId" content="FrontPage.Editor.Document">

    <TITLE>Memory Map</TITLE>
    <LINK rel="stylesheet" type="text/css" href="help/shared/DefaultStyle.css">
  </HEAD>

  <BODY>
    <H1><A name="View_Memory_Map"></A>Memory Map</H1>

    <P>&nbsp;</P>

    <P>The <I>Memory Map</I> window displays a list of memory blocks that make up the memory
    structure of the current program.&nbsp; The component provides actions for adding, renaming,
    moving, splitting, extending, joining, and deleting memory blocks.</P>
    
    <P><IMG src="help/shared/note.png" border="0">When working with a versioned program within a 
    shared project an exclusive checkout of the program project file is required to perform any 
    modifications to the memory map.</P>

    <P>Ghidra supports three different block types through the Memory Map window:</P>

    <OL>
      <LI>
        <A name="DefaultType"></A><I><B>Default</B> -</I> The normal block type that can be
        <I>Initialized</I>, <I>File Bytes</I> or <I>Uninitialized</I>. 

        <UL>
          <LI><A name="InitializedBlock"></A><I>Initialized</I> - The block has an initial value
          specified for all bytes</LI>
          
          <LI><A name="FileBytesBlock"></A><I>File Bytes</I> - An initialized block whose data corresponds
          to a specified range within an existing loaded File Bytes instance.</LI>

          <LI><A name="UninitializedBlock"></A><I>Uninitialized</I> - The block has no initial
          value specified for the bytes</LI>
        </UL>
      </LI>

      <LI><A name="BitMappedType"></A><I><B>Bit Mapped</B></I> - The block provides a
      bit-addressable map onto other blocks. This is useful when a processor can indirectly access 
      individual bits within memory using an alternative byte address.  Such blocks have a fixed
      mapping of 8-bytes to 1-source-byte..</LI>

      <LI><A name="ByteMappedType"></A><I><B>Byte Mapped</B></I> - The block provides a
      byte-addressable map onto other blocks.&nbsp; This can be useful when a range of 
      bytes can be accessed via an alternative address range.  While the default mapping
      is 1-byte to 1-source-byte (1:1), other decimations are permitted specified using a
      mapping ratio (e.g., 2:4).</LI>
    </OL>
    
    <P><IMG src="help/shared/note.png" border="0"><I>File Bytes</I> are currently only created
        by importers.  At this point in time there is no capability provided by the Memory Map provider to create a
        new File Bytes instance.</P>
    
    <P><A name="OverlayType"></A><B>Overlay</B> - Each of the above memory block types may 
    optionally be created as an <I>Overlay</I> block.  One or more memory blocks may be defined
    within the same overlay address space where the <B>Overlayed Space</B> is reflected in the memory map table.    
	Overlay blocks can serve various 
      purposes where a memory range may contain different data/code at any given point in time 
      or processor state.  &nbsp; Note that Overlay blocks 
      do not relocate with image base changes and have some limitations in conjunction with
      decompilation and analysis.</P>

    <P>To view the <I>Memory Map</I>, select <B>Window<IMG src="help/shared/arrow.gif" border="0">
    Memory Map</B> from the main tool menu, or click on the&nbsp; <IMG src="images/memory16.gif"
    border="0">&nbsp; icon in the tool bar.&nbsp; Note that the current Image Base Address is
    specified within the title bar.<BR>
    </P>

    <P>&nbsp;</P>

    <CENTER>
      <IMG alt="" src="images/MemoryMap.png">
    </CENTER><BR>
     

    <P>&nbsp;</P>

    <P>Each row displays information about one of the memory blocks.&nbsp; The following summarizes
    the information about each block.</P>
    
    <P><IMG src="help/shared/note.png" border="0">Many of the Memory Map table fields may be 
    modified to alter the memory block specification (such fields are marked with an '*').</P>

    <BLOCKQUOTE>
      <P><B><I>Name * </I></B> - Name of the memory block.&nbsp;</P>

      <P><I><B>Start -</B></I> The starting address (in hex) of the memory block.  For overlay blocks
      this will reflect an overlay address which includes the name of the overlay address space.</P>

      <P><B><I>End -</I></B> The ending address (in hex) of the memory block.  For overlay blocks
      this will reflect an overlay address which includes the name of the overlay address space.</P>

      <P><I><B>Length -</B></I> The length (in hex) of the memory block.</P>

      <P><I><B>R * -</B></I> Indicates read permission.</P>

      <P><I><B>W * -</B></I> Indicates write permission.</P>

      <P><I><B>X * -</B></I> Indicates execute permission.</P>
       
      <P><B>Volatile * </B> - Indicates a region of volatile I/O Memory.</P>
      
      <P><B>Artificial * </B> - Indicates an artificial memory block which has been fabricated to 
      facilitate analysis.</P>

	  <P><I><B>Overlayed Space -</B></I> If the block is an overlay block this column indicates the name
	  of the overlayed physical memory space.  This field will be empty for non-overlay blocks.</P>

      <P><I><B>Type -</B></I> Indicates whether the block is a <A href="#DefaultType">Default</A>,
      <A href="#BitMappedType">Bit Mapped</A> or <A href="#ByteMappedType">Byte Mapped</A> type of block.</P>

      <P><I><B>Initialized * -</B></I> Indicates whether the block has been initialized with values;
      this property applies to Default and Overlay blocks.</P>
      
      <P><I><B>Byte Source -</B></I> Provides information about the source of the bytes in this
      	block. A block is made up of one or more sub-blocks. Each sub-block is listed by its type,
      	size, and other type-specific information. For example, if the bytes were originally imported 
      	from a file, then the file name and the offset into that file is displayed. If the bytes are
      	mapped to another region of memory, then the start address for the mapping will be
      	displayed.</P>

      <P><I><B>Source -</B></I> Description of block origination.</P>

      <P><I><B>Comment * -</B></I> User added comment about this memory block.</P>

      <P>&nbsp;</P>
    </BLOCKQUOTE>

	<H2><A name="OverlaySpaceRename"></A>Rename Overlay Address Space</H2>
	<BLOCKQUOTE>
	<P>An overlay address space may be renamed by selecting an overlay block within the table.
	Its current overlay address space name should appear as the prefix to its Start address
	(e.g., OV1::00001000 where OV1 is the current name of the overlay space containing the 
	overlay block).  The popup menu action <B>Rename Overlay Space</B> may be selected after
	a right-click on the selected overlay block row.  This will popup a window from which the
	overlay space may be renamed.</P>
	
	<P><IMG src="help/shared/note.png" border="0">An important consideration when renaming overlay memory spaces is that any Diff operation
	between the affected Program and another Program may not behave as expected until after the
	Program is closed and re-opened.  This is caused by address comparison and ordering which 
	will continue to use the original overlay space name until the program is re-opened.</P>
	</BLOCKQUOTE>
	
    <H2><A name="MemoryBlockEdits"></A>Memory Block Edits</H2>

    <BLOCKQUOTE>
      <H3>Rename</H3>

      <BLOCKQUOTE>
        <P>Memory Blocks can be renamed by double-clicking on the name field and entering a new
        name.</P>
      </BLOCKQUOTE>

      <H3>Change Read Permission</H3>

      <BLOCKQUOTE>
        <P>The read permission of a memory block can be changed by left-clicking on the
        checkbox.</P>
      </BLOCKQUOTE>

      <H3>Change Write Permission</H3>

      <BLOCKQUOTE>
        <P>The write permission of a memory block can be changed by left-clicking on the
        checkbox.</P>
      </BLOCKQUOTE>

      <H3>Change Execute Permission</H3>

      <BLOCKQUOTE>
        <P>The execute permission of a memory block can be changed by left-clicking on the
        checkbox.<BR>
        </P>
      </BLOCKQUOTE>

      <H3>Change Volatile Setting</H3>

      <BLOCKQUOTE>
        <P>The volatile setting of a memory block can be changed by left-clicking on the
        checkbox.</P>
      </BLOCKQUOTE>
      
      <H3>Change Artificial Setting</H3>

      <BLOCKQUOTE>
        <P>The artificial setting of a memory block can be changed by left-clicking on the
        checkbox.</P>
      </BLOCKQUOTE>

      <H3>Initialize Memory Block</H3>

      <BLOCKQUOTE>
        <P>A memory block that is currently Uninitialized can be Initialized by clicking on the
        <I>Initialized</I> checkbox. A dialog will appear allowing you to enter a byte value
        to be used to fill the block.  Deselecting the checkbox will cause the block be revert
        to uninitialized memory.  This will have the additional side effect of removing all
        functions, instructions, data, and outgoing references in that block.</P>
      </BLOCKQUOTE>

      <H3>Edit Comment</H3>

      <BLOCKQUOTE>
        <P>Memory Block comments can be changed by double-clicking on the comment field and
        entering the new comment. The comment can be a maximum of 256 characters.</P>
      </BLOCKQUOTE>
    </BLOCKQUOTE>

    <H2><A name="MemoryBlockOperations"></A>Memory Block Operations&nbsp;</H2>

    <P>The memory block operations are available through the icons on the header of the Memory Map
    window, or select a block in the table, right mouse click, and choose an option.</P>

    <H3><A name="Add_Block"></A><B><IMG src="images/Plus.png" border="0">&nbsp; Add</B></H3>

    <BLOCKQUOTE>
        <P>Select <B>Add</B> to bring up the <I>Add Memory Block</I> dialog.&nbsp; Fill in the
        requested information and select the <B>OK</B> button.</P>
    </BLOCKQUOTE>

    <P>&nbsp;</P>

    <TABLE x-use-null-cells="" width="100%">
      <TBODY>
        <TR>
          <TD align="center" width="100%"><IMG alt="" src="images/AddMemoryBlock.png"></TD>
        </TR>
      </TBODY>
    </TABLE><BR>
     <BR>
     

    <BLOCKQUOTE>
        <P>&nbsp;</P>

        <P><B><I>Block Name</I></B> - Enter the name of the new memory block.</P>

        <P><B><I>Start Address</I></B> - Enter the start address 
        (or <A href="help/topics/Misc/AddressExpressions.htm">Address Expression</A>)
        of the new memory block.&nbsp; If 
        the program language defines multiple address spaces, the address space must also be
        specified.&nbsp; The address space selection will not appear if only one is defined.
        If creating an overlay memory block within an existing overlay address space that 
        space should be selected.  A block within the default address space may not span across 
        the current Image Base Address.<BR>
        </P>

        <P><B><I>Length -</I></B> Enter the length of the new memory block.</P>

        <P><I><B>Comment -</B></I> Enter a comment for the block if desired.</P>

        <P><B><I>Read</I></B> - Sets the read permission.</P>

        <P><I><B>Write</B></I> - Sets the write permission.</P>

        <P><B><I>Execute</I></B> - Sets the execute permission.</P>

        <P><B>Volatile</B> - Marks a block as volatile I/O memory.</P>
        
        <P><B>Artificial</B> - Marks a memory block as artificial.  This may be useful when a 
        block is required to facilitate analysis but does not exist in the same form within a 
        running/loaded process state.</P>
        
        <P><B>Overlay</B> - Creates the block as an overlay block. An overlay memory block may be 
        created in two ways:
		<ul>
			<li>Specifying a <B>Start Addr</B> within an existing overlay address space 
			(this <B>Overlay</B> option is redudant and ignored), or</li>
			<li>Specifying a <B>Start Addr</B> within a physical memory address space and enabling
			this <B>Overlay</B> option.  This use case will force the creation of a new unique overlay 
			address space.</li>
		</ul> 
 
        <P><B><I>Block Types</I></B> - Select the block type from the combo box: <I><B>Default, Bit
        Mapped or Byte Mapped</B></I>.</P>

        <BLOCKQUOTE>
          <UL>
            <LI><I><B>Default&nbsp;</B></I> - A normal memory block within the processor's address
            space.&nbsp; These blocks cannot overlap any other default block.&nbsp; Default blocks
            can be one of the following types:</LI>
            <UL>
				<LI><B>Initialized</B> - Specify a value and a new block will be created
					using that value for every byte in the block. </LI>
				<LI><B>Uninitialized</B> - An uninitialized block will be created.</LI>
				<LI><B>File Bytes</B> - Select from a list of imported files and enter
				a starting offset for that file.  Those bytes will be the initial value for the block.</LI>
				<P><I><IMG src="help/shared/note.png" border="0"> You can use the "Add To Program"
				using "Binary Import" to create new FileBytes that you can use here.</I></P>
			</UL>
            <LI><B><I>Bit Mapped -</I></B> This is a block that allows bit addressing of a section
            of bytes in memory.&nbsp; For example, the first bit of the byte at memory location
            0x1000 might also be addressed as BIT:0. The second bit at the same byte would then be
            addressed as BIT:1 and so on.</LI>

            <LI style="list-style: none">
              <P>The illustration below depicts a Bit Mapped block of <I>Length</I> 16 with a
              <I>Start Addr</I> of (BIT:) 0000, and a <I>Source Address</I> of 00008100.&nbsp; Note
              that bit-mapped addresses are assigned from least significant bit to most
              significant bit.</P>
            

          <TABLE x-use-null-cells="" width="100%">
            <TBODY>
              <TR>
                <TD align="center" width="100%"><IMG border=1 src="images/BitOverlayAddresses.png" border=
                "0"></TD>
              </TR>
            </TBODY>
          </TABLE>
          
          <BR>This is used to model certain processors that allow this sort of addressing such as
            the INTEL 8051. When a Bit Mapped block is created you must specify the byte address on
            which the bit addressing will be based.</LI>
          </UL>

          <UL>

            <LI>&nbsp;<B><I>Byte Mapped</I></B> - This is a block that allows access to a range of
            bytes in memory using an alternative address.&nbsp; A <I>Source Address</I> must
            be specified which corresponds to the source of the actual bytes for this block, although all or part of the
            mapping may correspond to an uninitialized block or no block at all.  The default mapping ratio
      is 1-byte to 1-source-byte (1:1), although other decimations may be specified using a mapping ratio.  When specifying a <I>Mapping
      Ratio</I> both values must be in the range 1..127 where the right (source-byte count) value must be greater-than-or-equal
      to the left value (e.g., 2:4).</LI>
          </UL>
        </BLOCKQUOTE>
    </BLOCKQUOTE>

    <DIV align="center">
      <CENTER>
        <TABLE border="0" width="100%">
          <TBODY>
            <TR>
              <TD align="center" width="100%"><IMG alt="" src="images/AddMappedBlock.png"></TD>
            </TR>
          </TBODY>
        </TABLE>
      </CENTER>
    </DIV>

    <H3><A name="Move_Block"></A><IMG src="images/move.png" border="0"> Move</H3>

    <BLOCKQUOTE>
        <P>Select <B>Move</B> to bring up the <I>Move Memory Block</I> dialog. The <I>Move</I>
        action is enabled when exactly one memory block is selected.&nbsp; Enter either a new start
        or end address to cause the block to be moved.</P>
    </BLOCKQUOTE>

    <P>&nbsp;</P>

    <TABLE x-use-null-cells="" width="100%">
      <TBODY>
        <TR>
          <TD align="center" width="100%"><IMG src="images/MoveMemory.png" border="0"></TD>
        </TR>
      </TBODY>
    </TABLE><BR>
     <BR>
     

    <BLOCKQUOTE>
        <P>&nbsp;</P>

        <P><B><I>Name -</I></B> Name of the memory block to be moved (not editable).</P>

        <P><B><I>Start Address -</I></B> Current starting address of the block to be moved (not
        editable).</P>

        <P><B><I>End Address -</I></B> Current ending address of the block to be moved (not
        editable).</P>

        <P><B><I>Length -</I></B> Length of the memory block to be moved (not editable).</P>

        <P><B><I>New Start Address -</I></B> Enter the new starting address
        (or <A href="help/topics/Misc/AddressExpressions.htm">Address Expression</A>)
 		 for the block.&nbsp;
        The NEW ending address will be computed.</P>

        <P><B><I>New End Address -&nbsp;</I></B> Enter the new ending address
        (or <A href="help/topics/Misc/AddressExpressions.htm">Address Expression</A>)
        for the block. The NEW starting address will be computed.</P>

        <P><I><IMG src="help/shared/note.png" border="0"> You cannot move a block under the
        following conditions:</I></P>

        <UL>
          <LI><I>The changes specified would result in an overlap with the original block or any
          other existing block.&nbsp;</I></LI>

          <LI><I>The block is an <A href="#OverlayType">Overlay</A> block.</I></LI>
        </UL>
    </BLOCKQUOTE>

    <H3><A name="Split_Block"></A><IMG src="images/verticalSplit.png" border="0">&nbsp; Split</H3>

    <BLOCKQUOTE>
        <P>Select <B>Split</B> to bring up the <I>Split Block</I> Dialog. The <I>Split</I> action
        is enabled when exactly one memory block is selected.&nbsp; Use the <I>Split Block</I>
        Dialog to split a memory block into two smaller memory blocks.&nbsp;There are four ways to
        enter the split point:</P>

        <UL>
          <LI>Enter an end address
          (or <A href="help/topics/Misc/AddressExpressions.htm">Address Expression</A>)
           for the first block (block to split), or</LI>

          <LI>Enter a length for the first block (block to split), or</LI>

          <LI>Enter a start address         
          (or <A href="help/topics/Misc/AddressExpressions.htm">Address Expression</A>)
          for the second block (new block), or</LI>

          <LI>Enter a length for the second block (new block).</LI>
        </UL>
    </BLOCKQUOTE>

    <P>&nbsp;</P>

    <TABLE x-use-null-cells="" width="100%">
      <TBODY>
        <TR>
          <TD align="center" width="100%"><IMG src="images/SplitMemoryBlock.png" border="0"></TD>
        </TR>
      </TBODY>
    </TABLE><BR>
     <BR>
     

    <H3>&nbsp;</H3>

    <BLOCKQUOTE>
        <P><B><FONT color="#000080">Block to Split</FONT></B></P>

        <BLOCKQUOTE>
          <P><I><B>Block Name -</B></I> Name of block being split (not editable)</P>

          <P><I><B>Start Address -</B></I> Start address of block being split (not editable)</P>

          <P><I><B>End Address -</B></I> New end address of the original block</P>

          <P><I><B>Block Length -</B></I> New length of original block</P>
        </BLOCKQUOTE>

        <P><B><FONT color="#000080">New Block</FONT></B></P>

        <BLOCKQUOTE>
          <P><B><I>Block Name -</I></B> Name of new block.&nbsp; Default name will be provided, but
          it can be changed by editing this field</P>

          <P><B><I>Start Address -</I></B> Start address for the new split block</P>

          <P><I><B>End Address -</B></I> End address of the original block (not editable)</P>

          <P><B><I>Block Length -</I></B> Length of new split block</P>
        </BLOCKQUOTE>

        <P><I><IMG src="help/shared/note.png" border="0&gt;&lt;a href=">Overlay type blocks cannot
        be split.&nbsp;</I></P>
    </BLOCKQUOTE>

    <H3><A name="Expand_Block_Up"></A><IMG src="images/collapse.gif" border="0">&nbsp; Expand
    Up</H3>

    <BLOCKQUOTE>
        <P>Select <B>Expand Up</B> to bring up the <I>Expand Block Up</I> Dialog. The <I>Expand
        Up</I> action is enabled when exactly one memory block is selected.&nbsp; Use the <I>Expand
        Block Up</I> Dialog to cause a memory block to grow by adding additional bytes BEFORE the
        memory block.&nbsp; The block can be expanded by either entering a new start address or a
        new length.</P>
    </BLOCKQUOTE>

    <P>&nbsp;</P>

    <TABLE x-use-null-cells="" width="100%">
      <TBODY>
        <TR>
          <TD align="center" width="100%"><IMG src="images/MemoryExpandUp.png" border="0"></TD>
        </TR>
      </TBODY>
    </TABLE><BR>
     <BR>
     

    <BLOCKQUOTE>
        <P><B><I>New Start Address -</I></B> A new start address 
        (or <A href="help/topics/Misc/AddressExpressions.htm">Address Expression</A>)
        can be entered here.&nbsp; It must
        be before the current start address.</P>

        <P><I><B>End Address -</B></I> Displays the end address of the block (not editable).</P>

        <P><I><B>Block Length -</B></I> Displays the length of the block.&nbsp; A new value can be
        entered here which will cause a corresponding change in the start address.</P>

        <P><I><IMG src="help/shared/note.png" border="0"><A href="#OverlayType">Overlay</A> type
        blocks cannot be expanded.&nbsp;</I></P>
    </BLOCKQUOTE>

    <H3><A name="Expand_Block_Down"></A><IMG src="images/expand.gif" border="0">&nbsp; Expand
    Down</H3>

    <BLOCKQUOTE>
        <P>Select <B>Expand Down</B> to bring up the <I>Expand Block Down</I> Dialog. The <I>Expand
        Down</I> action is enabled when exactly one memory block is selected.&nbsp; Use the
        <I>Expand Block Down</I> Dialog to cause a memory block to grow by adding additional bytes
        AFTER the memory block. The block can be expanded by either entering a new end address or a
        new length.</P>
    </BLOCKQUOTE>

    <P>&nbsp;</P>

    <TABLE x-use-null-cells="" width="100%">
      <TBODY>
        <TR>
          <TD align="center" width="100%"><IMG src="images/MemoryExpandDown.png" border="0"></TD>
        </TR>
      </TBODY>
    </TABLE><BR>
     <BR>
     

    <BLOCKQUOTE>
        <P><I><B>Start Address -</B></I> Displays the start address of the block (not
        editable).</P>

        <P><B><I>New End Address -</I></B> A new end address         
        (or <A href="help/topics/Misc/AddressExpressions.htm">Address Expression</A>)
         can be entered here. It must be after
        the current end address.</P>

        <P><I><B>Block Length -</B></I> Displays the length of the block.&nbsp; A new value can be
        entered here which will cause a corresponding change in the end address.</P>

        <P><I><IMG src="help/shared/note.png" border="0"><A href="#OverlayType">Overlay</A> type
        blocks cannot be expanded.&nbsp;</I></P>
    </BLOCKQUOTE>

    <H3><A name="Merge_Blocks"></A><IMG src="images/Merge.png" border="0">&nbsp; Merge</H3>

    <BLOCKQUOTE>
        <P>The <I>Merge</I> action is enabled when two or more memory blocks are selected.&nbsp; It
        attempts to merge all selected blocks into one block.&nbsp; Any "gaps" will be "filled in"
        with 0s.&nbsp;</P>

        <P><I><IMG src="help/shared/warning.png" border="0"> Caution should be used because a VERY
        large memory block can be created if the memory blocks being merged are far apart in the
        address space.</I>&nbsp; Ghidra will display a warning if a really large block is about to
        be created.&nbsp; Disregarding the warning may cause Ghidra to fail with an "out of memory"
        error.</P>

        <P><I><IMG src="help/shared/note.png" border="0"></I> Only adjacent <I>Default</I> blocks of the same 
        initialization state can be merged.</P>
        <P><I><IMG src="help/shared/note.png" border="0"></I>Overlay type blocks cannot be merged.</P>
    </BLOCKQUOTE>

    <H3><A name="Delete_Block"></A><IMG src="images/edit-delete.png" border="0">&nbsp; Delete</H3>

    <BLOCKQUOTE>
        <P>The <I>Delete</I> action is enabled when one or more memory blocks are selected.&nbsp;
        All selected blocks will be deleted. If the blocks contained defined data or instructions,
        a confirmation dialog is displayed; select "yes" on the dialog to delete the block. A
        progress dialog is displayed while the block is being deleted.&nbsp;</P>

        <P><IMG src="help/shared/tip.png" border="0">For large blocks that may contain many
        symbols, references, instructions, etc., the delete operation may take a while to complete.
        You can cancel the delete operation at any time.</P>
        
        <P><I><IMG src="help/shared/note.png" border="0">When removing an overlay memory block the
        corresponding overlay address space will also be removed if no other overlay blocks
        exist within that space.</P>
    </BLOCKQUOTE>

    <H3><A name="Set_Image_Base"></A><IMG src="images/house.png" border="0">&nbsp; Set Image
    Base</H3>

    <BLOCKQUOTE>
        <P>The <I>Set Image Base</I> action allows you to change the base address of a
        program.&nbsp; This action is useful when working with relocatable code such as DLLs or
        shared objects.&nbsp; All addresses, code units, references, etc. will immediately be
        re-based relative to the new base address.</P>

        <P>For example, given a program base at 0x01000000 with a memory block starting at address
        0x01001000. If the base address was changed to 0xeeee0000, then the new start address of
        the memory block would become 0xeeee1000.</P>

        <P>To change the image base, enter a new image base in the text field and click on the
        <I>OK</I> button.<BR>
        </P>
    </BLOCKQUOTE>


    <DIV align="left">
      <TABLE border="0" width="100%">
        <TBODY>
          <TR>
            <TD width="100%">
              <P align="center"><IMG src="images/SetImageBaseDialog.png" border="0"></P>
            </TD>
          </TR>
        </TBODY>
      </TABLE>
    </DIV>
    <H3><A name="Navigation"></A><IMG alt="" src="images/locationIn.gif">&nbsp;Auto Updating Selection
     by Location</H3>

      <BLOCKQUOTE>
        <P>The <IMG alt="" src="images/locationIn.gif"> &nbsp; button controls whether a memory
        block is selected in the Memory Map table when the global program location changes such
        as when you click in the CodeBrowser, Byte Viewer, or Decompiler.&nbsp;</P>
      </BLOCKQUOTE>
      
    <P class="providedbyplugin">Provided by: <I>Memory Map</I> Plugin<BR>
     &nbsp;</P>
  </BODY>
</HTML>
